public class code1 {
    // 力扣 150 验证回文串

    public boolean isPalindrome(String s) {
        // 阅读题目要求，有 3 个条件
        // 将大写字母转换为小写字母
        // 将除了字母之外的所有其他字符串进行删除

        // 定义 StringBuffer 将每一段的字母重新进行拼接
        StringBuffer Sbuffer = new StringBuffer();

        for(int i = 0; i < s.length(); i++) {
            // 获取当前下标位置处的 i 元素
            char c = s.charAt(i);
            // 针对 if 进行条件判断并且重新拼接
            if(Character.isLetterOrDigit(c)) {
                // 将只要是属于字母的字符串进行最小化操作，之后重新拼接到新的字符串中
                Sbuffer.append(Character.toLowerCase(c));
            }
        }

        // 将重新整理好的 Sbuffer 进行回文数的判断
        // 通过双指针解决
        int len = Sbuffer.length();
        int left = 0;
        int right = len - 1;
        while (left < right) {
            if (Sbuffer.charAt(left) != Sbuffer.charAt(right)) {
                return false;
            }
            ++left;
            --right;
        }
        return true;
    }
}
